home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio 5 / Ray Dream.iso / pc / DreamSDK / Windows / INCLUDES / I3DEXREN.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-11  |  6.4 KB  |  169 lines

  1. /* $Id: I3DExRen.h 1.26 1997/07/07 21:56:02 john Exp $ */
  2. /*****************************************************************************\
  3. *                                                                             *
  4. * I3DExRen.h -     I3DExRenderer definition                                                    *
  5. *                                                                             *
  6. *           Copyright (c) 1995, Ray Dream, Inc. All rights reserved.          *
  7. *                                                                             *
  8. \*****************************************************************************/
  9.  
  10. #ifndef __I3DEXREN__
  11. #define __I3DEXREN__
  12.  
  13. #ifndef __I3DEX__
  14. #include "I3DEx.h"
  15. #endif
  16.  
  17.  
  18. //class TRenderInfo;
  19. struct I3DShGroup;
  20. struct I3DShEnvironment;
  21. struct I3DShCamera;
  22. struct I3DShLightsource;
  23. struct I3DShScene;
  24. //struct IShLineArt;
  25. struct IShRasterBuffer;
  26. struct I3DShInstance;
  27. struct IShRasterOffscreen;
  28. struct InstanceAndTransform;
  29.  
  30. struct RTData {
  31.     void *data;
  32.     long channelBits;
  33.     long channelOffsetBits;
  34.     long columnBits;
  35.     long rowBits;
  36.     short nbrChannels;
  37.     };
  38.  
  39.  
  40. enum {    k8Color,
  41.                 k8Distance,
  42.                 k8Position,
  43.                 k8Normal,
  44.                 k8Alpha,
  45.                 k8Index,
  46.                 k8Surface
  47.                 };
  48.  
  49. enum {    k32Distance,
  50.                 k32PositionX,k32PositionY,k32PositionZ,
  51.                 k32NormalX,k32NormalY,k32NormalZ,
  52.                 k32Alpha,
  53.                 k32Index,
  54.                 k32SurfaceU,k32SurfaceV,
  55.                 k32DiffuseColor,k32SpecularColor,k32SpecularSizeValue,
  56.                 k32AmbientValue,k32LambertValue,
  57.                 k32ReflectionColor,k32TransparencyColor,k32RefractionValue,
  58.                 k32GlowColor
  59.                 };
  60.  
  61. enum {kNbr8GBuffer=k8Surface+1,kNbr32GBuffer=k32GlowColor+1};
  62.  
  63. struct RTBuffer {
  64.     RTData *channel[kNbr8GBuffer];
  65.     };
  66.  
  67. struct RT32Data {
  68.     short h;
  69.     short v;
  70.     IShRasterBuffer *channel[kNbr32GBuffer];
  71.     };
  72.  
  73.  
  74. //typedef BOOLEAN (*TestHitProc) (I3DShInstance *theInstance);
  75. //typedef Boolean (*CallbackVSVp)(short vv,void *priv);
  76.  
  77. //****** Globally Unique Ids *************************************************
  78.  
  79. DEFINE_GUID(IID_I3DExRenderer, 0xAD619EE0L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  80. DEFINE_GUID(IID_I3DExGBufferRenderer, 0xAD619EE1L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  81. DEFINE_GUID(IID_I3DExInteractiveRenderer, 0xAD619EE3L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  82. DEFINE_GUID(IID_I3DLineDrawer, 0xAD619EE5L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  83. DEFINE_GUID(IID_I3DExDoubleBuffer, 0xAD619EE6L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  84. DEFINE_GUID(IID_I3DRenderStatistics, 0xAD619EE7L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  85.  
  86. DEFINE_GUID(IID_I3DSetScene, 0xd6b30100, 0xf6fa, 0x11d0, 0x85, 0x76, 0x0, 0xa0, 0xc9, 0xc, 0x1b, 0xf1);
  87.  
  88. //*****************************************************************************
  89.  
  90. DECLARE_INTERFACE_(I3DSetScene, IUnknown) {
  91.     STDMETHOD(SetScene) (I3DShScene *ascene) PURE;
  92.     };
  93.  
  94. DECLARE_INTERFACE_(I3DRenderStatistics, IUnknown) {
  95.     STDMETHOD_(I3DRenderStatistics*, Clone) (THIS) PURE;
  96.     STDMETHOD(CombineStatistics) (I3DRenderStatistics** statList, long statListSize) PURE;
  97.     STDMETHOD_(void*, GetDataBuffer) (THIS) PURE;
  98.     STDMETHOD_(short, GetResID) (THIS) PURE;
  99.     };
  100.  
  101. DECLARE_INTERFACE_(I3DExRenderer, I3DExDataExchanger) {
  102.     STDMETHOD(SetTreeTop) (I3DShGroup* treeTop) PURE;
  103.     STDMETHOD(SetCamera) (I3DShCamera* camera) PURE;
  104.     STDMETHOD(SetEnvironment) (I3DShEnvironment* environment) PURE; // replace the 3 next functions
  105.     //STDMETHOD(SetBackground) (I3DShEnvironment* background) PURE;
  106.     //STDMETHOD(SetBackdrop) (I3DShEnvironment* backdrop) PURE;
  107.     //STDMETHOD(SetAtmosphere) (I3DShEnvironment* atmosphere) PURE;
  108.     STDMETHOD(SetAmbientLight) (const COLOR3D &ambiantColor) PURE;
  109.     STDMETHOD(Dehydrate) (short level) PURE;
  110.     STDMETHOD_(ULONG, GetRenderingTime) () PURE;
  111.   STDMETHOD(SetOffscreen) (IShRasterOffscreen* offscreen) PURE;
  112.   STDMETHOD(SetFieldRenderingData) (Boolean useFieldRendering,short firstFrame) PURE;
  113.   STDMETHOD_(I3DRenderStatistics*, GetRenderStatistics) () PURE;
  114.     STDMETHOD(PrepareDraw) (const RECT3D &totalarea,const VECTOR2D &offscreenOffset,NUM3D zoom, BOOLEAN (*callback) (short vv, void *priv),void *priv) PURE;
  115.     STDMETHOD(DrawRect) (short mode,const RECT3D &area) PURE;
  116.     STDMETHOD_(BOOL, IsSMPAware) () PURE;
  117.     STDMETHOD(GetPreferredTiling) (const RECT3D &area, POINT3D & tileSize) PURE;
  118.   };
  119.  
  120. DECLARE_INTERFACE_(I3DExGBufferRenderer, IUnknown) {
  121.     STDMETHOD(Set32BitGBuffers) (RT32Data* bufferData) PURE;
  122.     STDMETHOD(Set8BitGBuffers) (RTBuffer* bufferData) PURE;
  123.     };
  124.  
  125. enum I3DLineDrawerDrawHandlePattern{
  126.     kSelectedHandle=0x01FFFFFF,
  127.     kNotSelectedHandle=0x01F8C63F,
  128.     kFullRoundHandle=0x00EFFFEE,
  129.     kFramedRoundHandle=0x00EDC76E
  130.     };
  131.  
  132. DECLARE_INTERFACE_(I3DLineDrawer, IUnknown) {
  133.     STDMETHOD(SetPenWidth) (NUM3D width) PURE;
  134.     STDMETHOD(SetPenColor) (COLOR3D acolor) PURE;
  135.     STDMETHOD(Set2DTransform) (const VECTOR2D &offset,const VECTOR2D &zoom) PURE;
  136.     STDMETHOD(MoveTo) (const VECTOR3D &apoint) PURE;
  137.     STDMETHOD(LineTo) (const VECTOR3D &apoint) PURE;
  138.     STDMETHOD(DrawHandle) (long a5x5Pattern) PURE;
  139.     };
  140.  
  141. enum {kInstanceModifiedTransform=1,kInstanceModifiedShading=2};
  142.  
  143. DECLARE_INTERFACE_(I3DExInteractiveRenderer, IUnknown) {
  144.     STDMETHOD(AddLightsource) (I3DShLightsource* lightsource) PURE;
  145.     STDMETHOD(RemoveLightsource) (I3DShLightsource* lightsource) PURE;
  146.     STDMETHOD(LightsourceModified) (I3DShLightsource* lightsource) PURE;
  147.     STDMETHOD(AddInstance) (I3DShInstance* instance) PURE;
  148.     STDMETHOD(RemoveInstance) (I3DShInstance* instance) PURE;
  149.     STDMETHOD(InstanceModified) (I3DShInstance* instance,const AFFINETRANSFORM &aT,long how) PURE;
  150.  
  151.     STDMETHOD(InvalAllFCaches) (short how) PURE;
  152.     STDMETHOD(PreDraw) (void *awnd,const RECT3D& clipRect,POINT3D offset,short mode) PURE;
  153.     STDMETHOD(DrawInstances) (long nbrInstances,const InstanceAndTransform *instances) PURE;
  154.     STDMETHOD(PostDraw) () PURE;
  155.     STDMETHOD(DrawOnScreen) (void *awnd,const RECT3D &area) PURE;
  156.     STDMETHOD(GetBackDrawer) (I3DLineDrawer *&aLD) PURE;
  157.     STDMETHOD(RestoreBackDrawer) (I3DLineDrawer *aLD) PURE;
  158.     STDMETHOD(GetForeDrawer) (I3DLineDrawer *&aLD) PURE;
  159.     STDMETHOD(RestoreForeDrawer) (I3DLineDrawer *aLD) PURE;
  160.     STDMETHOD(SetEraseColor) (COLOR3D acolor) PURE;
  161.     };
  162.  
  163. DECLARE_INTERFACE_(I3DExDoubleBuffer, IUnknown) {
  164.     STDMETHOD(BeginDoubleBuffer) (const RECT3D &area) PURE;
  165.     STDMETHOD(EndDoubleBuffer) () PURE;
  166.     };
  167.  
  168. #endif
  169.